//import java.security.SecureRandom;
//import java.security.Security;
//
//public class PgpKeyUtil
//{
//    private static PGPKeyBundle complexPublicKey;
//    private static PGPKeyBundle complexPrivateKey;
//
//    public static void genKey(String recipientName, String Passphrase, String publicAscAddr, String secretAscAddr)
//    {
//        Security.addProvider(new CryptixCrypto());
//
//        Security.addProvider(new CryptixOpenPGP());
//
//        generateComplexKey(recipientName, Passphrase);
//
//        writeKeys(publicAscAddr, secretAscAddr);
//    }
//
//    public static void generateComplexKey(String recipientName, String Passphrase)
//    {
//        SecureRandom sr = new SecureRandom();
//        try
//        {
//            KeyBundleFactory kbf = KeyBundleFactory.getInstance("OpenPGP");
//            complexPublicKey = (PGPKeyBundle)kbf.generateEmptyKeyBundle();
//            complexPrivateKey = (PGPKeyBundle)kbf.generateEmptyKeyBundle();
//
//            KeyPairGenerator kpg = KeyPairGenerator.getInstance("OpenPGP/Signing/DSA");
//            kpg.initialize(1024, sr);
//
//            KeyPair kp = kpg.generateKeyPair();
//            PublicKey pubkey = kp.getPublic();
//            PrivateKey privkey = kp.getPrivate();
//
//            PrincipalBuilder princbuilder =
//                    PrincipalBuilder.getInstance("OpenPGP/UserID");
//
//            Principal userid = princbuilder.build(recipientName);
//
//            CertificateBuilder certbuilder =
//                    CertificateBuilder.getInstance("OpenPGP/Self");
//            Certificate cert =
//                    certbuilder.build(pubkey, userid, privkey, sr);
//
//            complexPublicKey.addCertificate(cert);
//            complexPrivateKey.addCertificate(cert);
//
//            complexPrivateKey.addPrivateKey(privkey, pubkey,
//                    Passphrase.toCharArray(), sr);
//        }
//        catch (Exception e)
//        {
//
//            e.printStackTrace();
//        }
//        KeyPairGenerator kpg = null;
//        try
//        {
//            kpg = KeyPairGenerator.getInstance("OpenPGP/Encryption/ElGamal");
//        }
//        catch (NoSuchAlgorithmException nsae)
//        {
//
//            nsae.printStackTrace();
//        }
//        kpg.initialize(1024, sr);
//        KeyPair kp = kpg.generateKeyPair();
//
//        PublicKey pubsubkey = kp.getPublic();
//        PrivateKey privsubkey = kp.getPrivate();
//
//        PublicKey pubmainkey = null;
//        PrivateKey privmainkey = null;
//        try
//        {
//            pubmainkey = (PublicKey)complexPrivateKey.getPublicKeys().next();
//            privmainkey = complexPrivateKey.getPrivateKey(pubmainkey,
//                    Passphrase.toCharArray());
//        }
//        catch (UnrecoverableKeyException uke)
//        {
//            uke.printStackTrace();
//        }
//        try
//        {
//            complexPublicKey.addPublicSubKey(pubsubkey, privmainkey);
//        }
//        catch (KeyBundleException kbe)
//        {
//            System.err.println("Adding the subkey and/or generating the blinding signature failed.");
//
//            kbe.printStackTrace();
//        }
//        try
//        {
//            complexPrivateKey.addPublicSubKey(pubsubkey, complexPublicKey);
//        }
//        catch (KeyBundleException kbe)
//        {
//            kbe.printStackTrace();
//        }
//        try
//        {
//            complexPrivateKey.addPrivateSubKey(privsubkey, pubsubkey,
//                    Passphrase.toCharArray(), sr);
//        }
//        catch (KeyBundleException kbe)
//        {
//            kbe.printStackTrace();
//        }
//        try
//        {
//            PrincipalBuilder princbuilder =
//                    PrincipalBuilder.getInstance("OpenPGP/UserID");
//            Principal userid = princbuilder.build(recipientName);
//
//            CertificateBuilder certbuilder =
//                    CertificateBuilder.getInstance("OpenPGP/Self");
//            Certificate cert = certbuilder.build(pubmainkey, userid,
//                    privmainkey, sr);
//
//            complexPublicKey.addCertificate(cert);
//            complexPrivateKey.addCertificate(cert);
//        }
//        catch (NoSuchAlgorithmException nsae)
//        {
//            nsae.printStackTrace();
//        }
//        catch (PrincipalException pe)
//        {
//            pe.printStackTrace();
//        }
//        catch (CertificateException ce)
//        {
//            ce.printStackTrace();
//        }
//        catch (KeyBundleException kbe)
//        {
//            kbe.printStackTrace();
//        }
//    }
//
//    /* Error */
//    public static void writeKeys(String publicAscAddr, String secretAscAddr)
//    {
//
//    }
//
//    public static void main(String[] args)
//            throws Exception
//    {
//        genKey("aaaaaaaa", "123456", "公约路径", "私钥路径");
//    }
//}
